const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./tang_poems.db');

// 已知的诗人朝代对照表
const poetDynastyMap = {
  '李白': '唐',
  '杜甫': '唐',
  '王维': '唐',
  '孟浩然': '唐',
  '白居易': '唐',
  '李商隐': '唐',
  '王之涣': '唐',
  '柳宗元': '唐',
  '孟郊': '唐',
  '骆宾王': '唐',
  '李绅': '唐',
  '李峤': '唐',
  '贾岛': '唐',
  '王昌龄': '唐',
  '张继': '唐',
  '高适': '唐',
  '虞世南': '唐',
  '林杰': '唐',
  '张志和': '唐',
  '贺知章': '唐',
  '皮日休': '唐',
  '卢梅坡': '宋',
  '胡令能': '唐',
  '袁枚': '清',
  '朱熹': '宋',
  '翁卷': '宋',
  '王安石': '宋'
};

// 已知的诗歌标题和作者对照表
const poemAuthorMap = {
  '静夜思': '李白',
  '春晓': '孟浩然',
  '登鹳雀楼': '王之涣',
  '咏鹅': '骆宾王',
  '悯农': '李绅',
  '望庐山瀑布': '李白',
  '送元二使安西': '王维',
  '九月九日忆山东兄弟': '王维',
  '夜雨寄北': '李商隐',
  '登高': '杜甫',
  '春望': '杜甫',
  '江雪': '柳宗元',
  '游子吟': '孟郊',
  '赋得古原草送别': '白居易',
  '忆江南': '白居易',
  '相思': '王维',
  '鹿柴': '王维',
  '竹里馆': '王维',
  '鸟鸣涧': '王维',
  '山居秋暝': '王维',
  '终南别业': '王维',
  '过故人庄': '孟浩然',
  '宿建德江': '孟浩然',
  '望洞庭湖赠张丞相': '孟浩然',
  '夜宿山寺': '李白',
  '早发白帝城': '李白',
  '望天门山': '李白',
  '独坐敬亭山': '李白',
  '赠汪伦': '李白',
  '黄鹤楼送孟浩然之广陵': '李白',
  '闻王昌龄左迁龙标遥有此寄': '李白',
  '峨眉山月歌': '李白'
};

function validatePoems() {
  console.log('开始验证诗歌数据...\n');
  
  db.all('SELECT * FROM tang_poems', (err, rows) => {
    if (err) {
      console.error('查询数据库时出错:', err.message);
      return;
    }
    
    let totalPoems = rows.length;
    let correctPoems = 0;
    let errors = [];
    
    rows.forEach((poem, index) => {
      let poemErrors = [];
      
      // 检查标题和作者是否匹配
      if (poemAuthorMap[poem.title] && poemAuthorMap[poem.title] !== poem.author) {
        poemErrors.push(`标题"${poem.title}"的作者应该是"${poemAuthorMap[poem.title]}"，但数据库中是"${poem.author}"`);
      }
      
      // 检查作者朝代是否正确
      if (poetDynastyMap[poem.author] && poetDynastyMap[poem.author] !== poem.dynasty) {
        poemErrors.push(`作者"${poem.author}"的朝代应该是"${poetDynastyMap[poem.author]}"，但数据库中是"${poem.dynasty}"`);
      }
      
      // 检查是否有朝代信息
      if (!poem.dynasty) {
        poemErrors.push('缺少朝代信息');
      }
      
      // 检查标题是否为空
      if (!poem.title || poem.title.trim() === '') {
        poemErrors.push('标题为空');
      }
      
      // 检查作者是否为空
      if (!poem.author || poem.author.trim() === '') {
        poemErrors.push('作者为空');
      }
      
      // 检查内容是否为空
      if (!poem.content || poem.content.trim() === '') {
        poemErrors.push('内容为空');
      }
      
      if (poemErrors.length === 0) {
        correctPoems++;
      } else {
        errors.push({
          id: poem.id,
          title: poem.title,
          author: poem.author,
          dynasty: poem.dynasty,
          errors: poemErrors
        });
      }
    });
    
    // 输出验证结果
    console.log(`验证完成！`);
    console.log(`总计: ${totalPoems} 首诗歌`);
    console.log(`正确: ${correctPoems} 首`);
    console.log(`错误: ${errors.length} 首`);
    console.log(`正确率: ${((correctPoems / totalPoems) * 100).toFixed(2)}%\n`);
    
    if (errors.length > 0) {
      console.log('发现以下错误:');
      errors.forEach((error, index) => {
        console.log(`\n${index + 1}. 诗歌ID: ${error.id}`);
        console.log(`   标题: ${error.title}`);
        console.log(`   作者: ${error.author}`);
        console.log(`   朝代: ${error.dynasty}`);
        console.log(`   错误: ${error.errors.join(', ')}`);
      });
    } else {
      console.log('✅ 所有诗歌数据都正确！');
    }
    
    db.close();
  });
}

// 运行验证
validatePoems(); 